package common.model.po;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import common.model.po.base.BasePo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 用户
 *
 * @author 米泽鹏
 * @since 2022-03-11
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ToString(callSuper = true)
@TableName(value = "sys_user", autoResultMap = true)
@ApiModel(value = "SysUser对象", description = "SysUser对象")
public class SysUser extends BasePo<SysUser> {

	/**
	 * 用户昵称（可以中文）
	 */
	private String nickname;

	/**
	 * 用户名（只能英文或数字）
	 */
	private String username;

	/**
	 * 性别（1-保密 2-男 3-女）
	 */
	private Integer gender;

	/**
	 * 邮箱
	 */
	private String email;

	/**
	 * 邮箱已激活（0-未激活 1-已激活）<br/>
	 * {@link common.model.enums.EmailValidEnum}
	 */
	private Integer emailValid;

	/**
	 * 个人介绍
	 */
	private String introduction;

	/**
	 * 头像
	 */
	private String avatar;

	/**
	 * 邮件通知类型
	 */
	@TableField(typeHandler = JacksonTypeHandler.class)
	private List<Integer> emailNotifyTypes;

	/**
	 * 密码
	 */
	private String password;

	/**
	 * 密码盐
	 */
	private String salt;

	/**
	 * 上次修改用户名的时间
	 */
	private Date lastModifyUsernameDate;

	/**
	 * 上次修改昵称的时间
	 */
	private Date lastModifyNicknameDate;

	/**
	 * 是否启用<br/>
	 * {@link common.model.enums.UserValidEnum}
	 */
	private Integer valid;

	/**
	 * 是否已删除<br/>
	 * {@link common.model.enums.UserDeletedEnum}
	 */
	private Integer isDeleted;

	/**
	 * 删除前的用户名
	 */
	private String originalUsername;

	/**
	 * 删除前的昵称
	 */
	private String originalNickname;

	@Override
	public Serializable pkVal() {
		return super.getId();
	}

}
